/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package converters;

import be.Materia;
import beans.ManagedBeanMateria;
import javax.el.ValueExpression;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
/**
 *
 * Sistema de Control Acádemico (saca) creado por Buñay Paulo
 */
@FacesConverter(value = "materiaConverter")
public class MateriaConverter implements Converter{

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {

        if (context == null) {
throw new NullPointerException("context");
}
if (component == null) {
throw new NullPointerException("component");
}
      FacesContext ctx = FacesContext.getCurrentInstance();
      ValueExpression vex = ctx.getApplication().getExpressionFactory().createValueExpression(ctx.getELContext(),"#{managedBeanMateria}",ManagedBeanMateria.class);
ManagedBeanMateria materias = (ManagedBeanMateria)vex.getValue(ctx.getELContext());
Materia materia;
try {
    
    
            
  materia =  materias.getMateria(new Integer(value));
} catch( NumberFormatException e ) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Valor Desconocido", "Este no es una Materia" );
throw new ConverterException( message );
}
if( materia == null ) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR,"Valor Desconocido", "La materia desconocido" );
throw new ConverterException( message );
}
return materia;
}



    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        
        
       // FacesContext ctx = FacesContext.getCurrentInstance();
     // ValueExpression vex = ctx.getApplication().getExpressionFactory().createValueExpression(ctx.getELContext(),"#{managedBeanAnioLectivo}",ManagedBeanAnioLectivo.class);
//ManagedBeanAnioLectivo anioslectivos = (ManagedBeanAnioLectivo)vex.getValue(ctx.getELContext());


    if (context == null){throw new NullPointerException("context");}
if (component == null){throw new NullPointerException("component");}


if(((Materia)value).getIdMateria() == null){
    //anioslectivos.llenar_myAnios();
    // este caso aplica para la primera vez que se carga el combo, cuando no se selecciona nada por defecto
   // System.out.println("ID NULLO, se le va a asignar el primer año de la lista "+ anioslectivos.getAnio_lectivo().getIdAnioLectivo());
    //return anioslectivos.getAnio_lectivo().getIdAnioLectivo().toString();
return "1";    
}
else
{  
    // este caso aplica para cualquier otro elemento que se selecciono en el combox
return ((Materia)value).getIdMateria().toString();
}
    }
}
